{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Support Vector Machine practice notebook with breast cancer data set\n",
    "\n",
    "In machine learning, support vector machines (SVMs, also support vector networks) are supervised learning models with associated learning algorithms that analyze data used for classification and regression analysis. Given a set of training examples, each marked as belonging to one or the other of two categories, an SVM training algorithm builds a model that assigns new examples to one category or the other, making it a **non-probabilistic binary linear classifier** (although methods such as Platt scaling exist to use SVM in a probabilistic classification setting). An SVM model is a representation of the examples as points in space, mapped ***so that the examples of the separate categories are divided by a clear gap that is as wide as possible***. New examples are then mapped into that same space and predicted to belong to a category based on which side of the gap they fall. This gap is also called maximum margin and the SVM classifier is called ***maximum margin clasifier***.\n",
    "\n",
    "In addition to performing linear classification, SVMs can efficiently perform a non-linear classification using what is called the kernel trick, implicitly mapping their inputs into high-dimensional feature spaces.\n",
    "![SVM-1](./Images/SVM-1.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Import libraries and load data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Get the Data\n",
    "\n",
    "We'll use the built in breast cancer dataset from Scikit Learn. Note the load function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.datasets import load_breast_cancer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "cancer = load_breast_cancer()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The data set is presented in a dictionary form**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names'])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cancer.keys()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**We can grab information and arrays out of this dictionary to create data frame and understand the features**\n",
    "\n",
    "**The description of features are as follows**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Breast Cancer Wisconsin (Diagnostic) Database\n",
      "=============================================\n",
      "\n",
      "Notes\n",
      "-----\n",
      "Data Set Characteristics:\n",
      "    :Number of Instances: 569\n",
      "\n",
      "    :Number of Attributes: 30 numeric, predictive attributes and the class\n",
      "\n",
      "    :Attribute Information:\n",
      "        - radius (mean of distances from center to points on the perimeter)\n",
      "        - texture (standard deviation of gray-scale values)\n",
      "        - perimeter\n",
      "        - area\n",
      "        - smoothness (local variation in radius lengths)\n",
      "        - compactness (perimeter^2 / area - 1.0)\n",
      "        - concavity (severity of concave portions of the contour)\n",
      "        - concave points (number of concave portions of the contour)\n",
      "        - symmetry \n",
      "        - fractal dimension (\"coastline approximation\" - 1)\n",
      "\n",
      "        The mean, standard error, and \"worst\" or largest (mean of the three\n",
      "        largest values) of these features were computed for each image,\n",
      "        resulting in 30 features.  For instance, field 3 is Mean Radius, field\n",
      "        13 is Radius SE, field 23 is Worst Radius.\n",
      "\n",
      "        - class:\n",
      "                - WDBC-Malignant\n",
      "                - WDBC-Benign\n",
      "\n",
      "    :Summary Statistics:\n",
      "\n",
      "    ===================================== ====== ======\n",
      "                                           Min    Max\n",
      "    ===================================== ====== ======\n",
      "    radius (mean):                        6.981  28.11\n",
      "    texture (mean):                       9.71   39.28\n",
      "    perimeter (mean):                     43.79  188.5\n",
      "    area (mean):                          143.5  2501.0\n",
      "    smoothness (mean):                    0.053  0.163\n",
      "    compactness (mean):                   0.019  0.345\n",
      "    concavity (mean):                     0.0    0.427\n",
      "    concave points (mean):                0.0    0.201\n",
      "    symmetry (mean):                      0.106  0.304\n",
      "    fractal dimension (mean):             0.05   0.097\n",
      "    radius (standard error):              0.112  2.873\n",
      "    texture (standard error):             0.36   4.885\n",
      "    perimeter (standard error):           0.757  21.98\n",
      "    area (standard error):                6.802  542.2\n",
      "    smoothness (standard error):          0.002  0.031\n",
      "    compactness (standard error):         0.002  0.135\n",
      "    concavity (standard error):           0.0    0.396\n",
      "    concave points (standard error):      0.0    0.053\n",
      "    symmetry (standard error):            0.008  0.079\n",
      "    fractal dimension (standard error):   0.001  0.03\n",
      "    radius (worst):                       7.93   36.04\n",
      "    texture (worst):                      12.02  49.54\n",
      "    perimeter (worst):                    50.41  251.2\n",
      "    area (worst):                         185.2  4254.0\n",
      "    smoothness (worst):                   0.071  0.223\n",
      "    compactness (worst):                  0.027  1.058\n",
      "    concavity (worst):                    0.0    1.252\n",
      "    concave points (worst):               0.0    0.291\n",
      "    symmetry (worst):                     0.156  0.664\n",
      "    fractal dimension (worst):            0.055  0.208\n",
      "    ===================================== ====== ======\n",
      "\n",
      "    :Missing Attribute Values: None\n",
      "\n",
      "    :Class Distribution: 212 - Malignant, 357 - Benign\n",
      "\n",
      "    :Creator:  Dr. William H. Wolberg, W. Nick Street, Olvi L. Mangasarian\n",
      "\n",
      "    :Donor: Nick Street\n",
      "\n",
      "    :Date: November, 1995\n",
      "\n",
      "This is a copy of UCI ML Breast Cancer Wisconsin (Diagnostic) datasets.\n",
      "https://goo.gl/U2Uwz2\n",
      "\n",
      "Features are computed from a digitized image of a fine needle\n",
      "aspirate (FNA) of a breast mass.  They describe\n",
      "characteristics of the cell nuclei present in the image.\n",
      "\n",
      "Separating plane described above was obtained using\n",
      "Multisurface Method-Tree (MSM-T) [K. P. Bennett, \"Decision Tree\n",
      "Construction Via Linear Programming.\" Proceedings of the 4th\n",
      "Midwest Artificial Intelligence and Cognitive Science Society,\n",
      "pp. 97-101, 1992], a classification method which uses linear\n",
      "programming to construct a decision tree.  Relevant features\n",
      "were selected using an exhaustive search in the space of 1-4\n",
      "features and 1-3 separating planes.\n",
      "\n",
      "The actual linear program used to obtain the separating plane\n",
      "in the 3-dimensional space is that described in:\n",
      "[K. P. Bennett and O. L. Mangasarian: \"Robust Linear\n",
      "Programming Discrimination of Two Linearly Inseparable Sets\",\n",
      "Optimization Methods and Software 1, 1992, 23-34].\n",
      "\n",
      "This database is also available through the UW CS ftp server:\n",
      "\n",
      "ftp ftp.cs.wisc.edu\n",
      "cd math-prog/cpo-dataset/machine-learn/WDBC/\n",
      "\n",
      "References\n",
      "----------\n",
      "   - W.N. Street, W.H. Wolberg and O.L. Mangasarian. Nuclear feature extraction \n",
      "     for breast tumor diagnosis. IS&T/SPIE 1993 International Symposium on \n",
      "     Electronic Imaging: Science and Technology, volume 1905, pages 861-870,\n",
      "     San Jose, CA, 1993.\n",
      "   - O.L. Mangasarian, W.N. Street and W.H. Wolberg. Breast cancer diagnosis and \n",
      "     prognosis via linear programming. Operations Research, 43(4), pages 570-577, \n",
      "     July-August 1995.\n",
      "   - W.H. Wolberg, W.N. Street, and O.L. Mangasarian. Machine learning techniques\n",
      "     to diagnose breast cancer from fine-needle aspirates. Cancer Letters 77 (1994) \n",
      "     163-171.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(cancer['DESCR'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Show the feature names**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['mean radius', 'mean texture', 'mean perimeter', 'mean area',\n",
       "       'mean smoothness', 'mean compactness', 'mean concavity',\n",
       "       'mean concave points', 'mean symmetry', 'mean fractal dimension',\n",
       "       'radius error', 'texture error', 'perimeter error', 'area error',\n",
       "       'smoothness error', 'compactness error', 'concavity error',\n",
       "       'concave points error', 'symmetry error', 'fractal dimension error',\n",
       "       'worst radius', 'worst texture', 'worst perimeter', 'worst area',\n",
       "       'worst smoothness', 'worst compactness', 'worst concavity',\n",
       "       'worst concave points', 'worst symmetry', 'worst fractal dimension'], \n",
       "      dtype='<U23')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cancer['feature_names']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Set up the DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 569 entries, 0 to 568\n",
      "Data columns (total 30 columns):\n",
      "mean radius                569 non-null float64\n",
      "mean texture               569 non-null float64\n",
      "mean perimeter             569 non-null float64\n",
      "mean area                  569 non-null float64\n",
      "mean smoothness            569 non-null float64\n",
      "mean compactness           569 non-null float64\n",
      "mean concavity             569 non-null float64\n",
      "mean concave points        569 non-null float64\n",
      "mean symmetry              569 non-null float64\n",
      "mean fractal dimension     569 non-null float64\n",
      "radius error               569 non-null float64\n",
      "texture error              569 non-null float64\n",
      "perimeter error            569 non-null float64\n",
      "area error                 569 non-null float64\n",
      "smoothness error           569 non-null float64\n",
      "compactness error          569 non-null float64\n",
      "concavity error            569 non-null float64\n",
      "concave points error       569 non-null float64\n",
      "symmetry error             569 non-null float64\n",
      "fractal dimension error    569 non-null float64\n",
      "worst radius               569 non-null float64\n",
      "worst texture              569 non-null float64\n",
      "worst perimeter            569 non-null float64\n",
      "worst area                 569 non-null float64\n",
      "worst smoothness           569 non-null float64\n",
      "worst compactness          569 non-null float64\n",
      "worst concavity            569 non-null float64\n",
      "worst concave points       569 non-null float64\n",
      "worst symmetry             569 non-null float64\n",
      "worst fractal dimension    569 non-null float64\n",
      "dtypes: float64(30)\n",
      "memory usage: 133.4 KB\n"
     ]
    }
   ],
   "source": [
    "df = pd.DataFrame(cancer['data'],columns=cancer['feature_names'])\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mean radius</th>\n",
       "      <th>mean texture</th>\n",
       "      <th>mean perimeter</th>\n",
       "      <th>mean area</th>\n",
       "      <th>mean smoothness</th>\n",
       "      <th>mean compactness</th>\n",
       "      <th>mean concavity</th>\n",
       "      <th>mean concave points</th>\n",
       "      <th>mean symmetry</th>\n",
       "      <th>mean fractal dimension</th>\n",
       "      <th>...</th>\n",
       "      <th>worst radius</th>\n",
       "      <th>worst texture</th>\n",
       "      <th>worst perimeter</th>\n",
       "      <th>worst area</th>\n",
       "      <th>worst smoothness</th>\n",
       "      <th>worst compactness</th>\n",
       "      <th>worst concavity</th>\n",
       "      <th>worst concave points</th>\n",
       "      <th>worst symmetry</th>\n",
       "      <th>worst fractal dimension</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>14.127292</td>\n",
       "      <td>19.289649</td>\n",
       "      <td>91.969033</td>\n",
       "      <td>654.889104</td>\n",
       "      <td>0.096360</td>\n",
       "      <td>0.104341</td>\n",
       "      <td>0.088799</td>\n",
       "      <td>0.048919</td>\n",
       "      <td>0.181162</td>\n",
       "      <td>0.062798</td>\n",
       "      <td>...</td>\n",
       "      <td>16.269190</td>\n",
       "      <td>25.677223</td>\n",
       "      <td>107.261213</td>\n",
       "      <td>880.583128</td>\n",
       "      <td>0.132369</td>\n",
       "      <td>0.254265</td>\n",
       "      <td>0.272188</td>\n",
       "      <td>0.114606</td>\n",
       "      <td>0.290076</td>\n",
       "      <td>0.083946</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>3.524049</td>\n",
       "      <td>4.301036</td>\n",
       "      <td>24.298981</td>\n",
       "      <td>351.914129</td>\n",
       "      <td>0.014064</td>\n",
       "      <td>0.052813</td>\n",
       "      <td>0.079720</td>\n",
       "      <td>0.038803</td>\n",
       "      <td>0.027414</td>\n",
       "      <td>0.007060</td>\n",
       "      <td>...</td>\n",
       "      <td>4.833242</td>\n",
       "      <td>6.146258</td>\n",
       "      <td>33.602542</td>\n",
       "      <td>569.356993</td>\n",
       "      <td>0.022832</td>\n",
       "      <td>0.157336</td>\n",
       "      <td>0.208624</td>\n",
       "      <td>0.065732</td>\n",
       "      <td>0.061867</td>\n",
       "      <td>0.018061</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>6.981000</td>\n",
       "      <td>9.710000</td>\n",
       "      <td>43.790000</td>\n",
       "      <td>143.500000</td>\n",
       "      <td>0.052630</td>\n",
       "      <td>0.019380</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.106000</td>\n",
       "      <td>0.049960</td>\n",
       "      <td>...</td>\n",
       "      <td>7.930000</td>\n",
       "      <td>12.020000</td>\n",
       "      <td>50.410000</td>\n",
       "      <td>185.200000</td>\n",
       "      <td>0.071170</td>\n",
       "      <td>0.027290</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.156500</td>\n",
       "      <td>0.055040</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>11.700000</td>\n",
       "      <td>16.170000</td>\n",
       "      <td>75.170000</td>\n",
       "      <td>420.300000</td>\n",
       "      <td>0.086370</td>\n",
       "      <td>0.064920</td>\n",
       "      <td>0.029560</td>\n",
       "      <td>0.020310</td>\n",
       "      <td>0.161900</td>\n",
       "      <td>0.057700</td>\n",
       "      <td>...</td>\n",
       "      <td>13.010000</td>\n",
       "      <td>21.080000</td>\n",
       "      <td>84.110000</td>\n",
       "      <td>515.300000</td>\n",
       "      <td>0.116600</td>\n",
       "      <td>0.147200</td>\n",
       "      <td>0.114500</td>\n",
       "      <td>0.064930</td>\n",
       "      <td>0.250400</td>\n",
       "      <td>0.071460</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>13.370000</td>\n",
       "      <td>18.840000</td>\n",
       "      <td>86.240000</td>\n",
       "      <td>551.100000</td>\n",
       "      <td>0.095870</td>\n",
       "      <td>0.092630</td>\n",
       "      <td>0.061540</td>\n",
       "      <td>0.033500</td>\n",
       "      <td>0.179200</td>\n",
       "      <td>0.061540</td>\n",
       "      <td>...</td>\n",
       "      <td>14.970000</td>\n",
       "      <td>25.410000</td>\n",
       "      <td>97.660000</td>\n",
       "      <td>686.500000</td>\n",
       "      <td>0.131300</td>\n",
       "      <td>0.211900</td>\n",
       "      <td>0.226700</td>\n",
       "      <td>0.099930</td>\n",
       "      <td>0.282200</td>\n",
       "      <td>0.080040</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>15.780000</td>\n",
       "      <td>21.800000</td>\n",
       "      <td>104.100000</td>\n",
       "      <td>782.700000</td>\n",
       "      <td>0.105300</td>\n",
       "      <td>0.130400</td>\n",
       "      <td>0.130700</td>\n",
       "      <td>0.074000</td>\n",
       "      <td>0.195700</td>\n",
       "      <td>0.066120</td>\n",
       "      <td>...</td>\n",
       "      <td>18.790000</td>\n",
       "      <td>29.720000</td>\n",
       "      <td>125.400000</td>\n",
       "      <td>1084.000000</td>\n",
       "      <td>0.146000</td>\n",
       "      <td>0.339100</td>\n",
       "      <td>0.382900</td>\n",
       "      <td>0.161400</td>\n",
       "      <td>0.317900</td>\n",
       "      <td>0.092080</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>28.110000</td>\n",
       "      <td>39.280000</td>\n",
       "      <td>188.500000</td>\n",
       "      <td>2501.000000</td>\n",
       "      <td>0.163400</td>\n",
       "      <td>0.345400</td>\n",
       "      <td>0.426800</td>\n",
       "      <td>0.201200</td>\n",
       "      <td>0.304000</td>\n",
       "      <td>0.097440</td>\n",
       "      <td>...</td>\n",
       "      <td>36.040000</td>\n",
       "      <td>49.540000</td>\n",
       "      <td>251.200000</td>\n",
       "      <td>4254.000000</td>\n",
       "      <td>0.222600</td>\n",
       "      <td>1.058000</td>\n",
       "      <td>1.252000</td>\n",
       "      <td>0.291000</td>\n",
       "      <td>0.663800</td>\n",
       "      <td>0.207500</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 30 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       mean radius  mean texture  mean perimeter    mean area  \\\n",
       "count   569.000000    569.000000      569.000000   569.000000   \n",
       "mean     14.127292     19.289649       91.969033   654.889104   \n",
       "std       3.524049      4.301036       24.298981   351.914129   \n",
       "min       6.981000      9.710000       43.790000   143.500000   \n",
       "25%      11.700000     16.170000       75.170000   420.300000   \n",
       "50%      13.370000     18.840000       86.240000   551.100000   \n",
       "75%      15.780000     21.800000      104.100000   782.700000   \n",
       "max      28.110000     39.280000      188.500000  2501.000000   \n",
       "\n",
       "       mean smoothness  mean compactness  mean concavity  mean concave points  \\\n",
       "count       569.000000        569.000000      569.000000           569.000000   \n",
       "mean          0.096360          0.104341        0.088799             0.048919   \n",
       "std           0.014064          0.052813        0.079720             0.038803   \n",
       "min           0.052630          0.019380        0.000000             0.000000   \n",
       "25%           0.086370          0.064920        0.029560             0.020310   \n",
       "50%           0.095870          0.092630        0.061540             0.033500   \n",
       "75%           0.105300          0.130400        0.130700             0.074000   \n",
       "max           0.163400          0.345400        0.426800             0.201200   \n",
       "\n",
       "       mean symmetry  mean fractal dimension           ...             \\\n",
       "count     569.000000              569.000000           ...              \n",
       "mean        0.181162                0.062798           ...              \n",
       "std         0.027414                0.007060           ...              \n",
       "min         0.106000                0.049960           ...              \n",
       "25%         0.161900                0.057700           ...              \n",
       "50%         0.179200                0.061540           ...              \n",
       "75%         0.195700                0.066120           ...              \n",
       "max         0.304000                0.097440           ...              \n",
       "\n",
       "       worst radius  worst texture  worst perimeter   worst area  \\\n",
       "count    569.000000     569.000000       569.000000   569.000000   \n",
       "mean      16.269190      25.677223       107.261213   880.583128   \n",
       "std        4.833242       6.146258        33.602542   569.356993   \n",
       "min        7.930000      12.020000        50.410000   185.200000   \n",
       "25%       13.010000      21.080000        84.110000   515.300000   \n",
       "50%       14.970000      25.410000        97.660000   686.500000   \n",
       "75%       18.790000      29.720000       125.400000  1084.000000   \n",
       "max       36.040000      49.540000       251.200000  4254.000000   \n",
       "\n",
       "       worst smoothness  worst compactness  worst concavity  \\\n",
       "count        569.000000         569.000000       569.000000   \n",
       "mean           0.132369           0.254265         0.272188   \n",
       "std            0.022832           0.157336         0.208624   \n",
       "min            0.071170           0.027290         0.000000   \n",
       "25%            0.116600           0.147200         0.114500   \n",
       "50%            0.131300           0.211900         0.226700   \n",
       "75%            0.146000           0.339100         0.382900   \n",
       "max            0.222600           1.058000         1.252000   \n",
       "\n",
       "       worst concave points  worst symmetry  worst fractal dimension  \n",
       "count            569.000000      569.000000               569.000000  \n",
       "mean               0.114606        0.290076                 0.083946  \n",
       "std                0.065732        0.061867                 0.018061  \n",
       "min                0.000000        0.156500                 0.055040  \n",
       "25%                0.064930        0.250400                 0.071460  \n",
       "50%                0.099930        0.282200                 0.080040  \n",
       "75%                0.161400        0.317900                 0.092080  \n",
       "max                0.291000        0.663800                 0.207500  \n",
       "\n",
       "[8 rows x 30 columns]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Is there any missing data?**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.sum(pd.isnull(df).sum()) # Sum of the count of null objects in all columns of data frame"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**What are the 'target' data in the data set?**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1,\n",
       "       1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0,\n",
       "       1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1,\n",
       "       0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n",
       "       0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1,\n",
       "       0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1,\n",
       "       0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0,\n",
       "       0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1,\n",
       "       1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n",
       "       1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0,\n",
       "       1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1,\n",
       "       1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1,\n",
       "       0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1,\n",
       "       1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,\n",
       "       0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1,\n",
       "       1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n",
       "       1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1,\n",
       "       1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cancer['target']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** Adding the target data to the DataFrame**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mean radius</th>\n",
       "      <th>mean texture</th>\n",
       "      <th>mean perimeter</th>\n",
       "      <th>mean area</th>\n",
       "      <th>mean smoothness</th>\n",
       "      <th>mean compactness</th>\n",
       "      <th>mean concavity</th>\n",
       "      <th>mean concave points</th>\n",
       "      <th>mean symmetry</th>\n",
       "      <th>mean fractal dimension</th>\n",
       "      <th>...</th>\n",
       "      <th>worst texture</th>\n",
       "      <th>worst perimeter</th>\n",
       "      <th>worst area</th>\n",
       "      <th>worst smoothness</th>\n",
       "      <th>worst compactness</th>\n",
       "      <th>worst concavity</th>\n",
       "      <th>worst concave points</th>\n",
       "      <th>worst symmetry</th>\n",
       "      <th>worst fractal dimension</th>\n",
       "      <th>Cancer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>17.99</td>\n",
       "      <td>10.38</td>\n",
       "      <td>122.80</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>0.11840</td>\n",
       "      <td>0.27760</td>\n",
       "      <td>0.3001</td>\n",
       "      <td>0.14710</td>\n",
       "      <td>0.2419</td>\n",
       "      <td>0.07871</td>\n",
       "      <td>...</td>\n",
       "      <td>17.33</td>\n",
       "      <td>184.60</td>\n",
       "      <td>2019.0</td>\n",
       "      <td>0.1622</td>\n",
       "      <td>0.6656</td>\n",
       "      <td>0.7119</td>\n",
       "      <td>0.2654</td>\n",
       "      <td>0.4601</td>\n",
       "      <td>0.11890</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>20.57</td>\n",
       "      <td>17.77</td>\n",
       "      <td>132.90</td>\n",
       "      <td>1326.0</td>\n",
       "      <td>0.08474</td>\n",
       "      <td>0.07864</td>\n",
       "      <td>0.0869</td>\n",
       "      <td>0.07017</td>\n",
       "      <td>0.1812</td>\n",
       "      <td>0.05667</td>\n",
       "      <td>...</td>\n",
       "      <td>23.41</td>\n",
       "      <td>158.80</td>\n",
       "      <td>1956.0</td>\n",
       "      <td>0.1238</td>\n",
       "      <td>0.1866</td>\n",
       "      <td>0.2416</td>\n",
       "      <td>0.1860</td>\n",
       "      <td>0.2750</td>\n",
       "      <td>0.08902</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>19.69</td>\n",
       "      <td>21.25</td>\n",
       "      <td>130.00</td>\n",
       "      <td>1203.0</td>\n",
       "      <td>0.10960</td>\n",
       "      <td>0.15990</td>\n",
       "      <td>0.1974</td>\n",
       "      <td>0.12790</td>\n",
       "      <td>0.2069</td>\n",
       "      <td>0.05999</td>\n",
       "      <td>...</td>\n",
       "      <td>25.53</td>\n",
       "      <td>152.50</td>\n",
       "      <td>1709.0</td>\n",
       "      <td>0.1444</td>\n",
       "      <td>0.4245</td>\n",
       "      <td>0.4504</td>\n",
       "      <td>0.2430</td>\n",
       "      <td>0.3613</td>\n",
       "      <td>0.08758</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>11.42</td>\n",
       "      <td>20.38</td>\n",
       "      <td>77.58</td>\n",
       "      <td>386.1</td>\n",
       "      <td>0.14250</td>\n",
       "      <td>0.28390</td>\n",
       "      <td>0.2414</td>\n",
       "      <td>0.10520</td>\n",
       "      <td>0.2597</td>\n",
       "      <td>0.09744</td>\n",
       "      <td>...</td>\n",
       "      <td>26.50</td>\n",
       "      <td>98.87</td>\n",
       "      <td>567.7</td>\n",
       "      <td>0.2098</td>\n",
       "      <td>0.8663</td>\n",
       "      <td>0.6869</td>\n",
       "      <td>0.2575</td>\n",
       "      <td>0.6638</td>\n",
       "      <td>0.17300</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>20.29</td>\n",
       "      <td>14.34</td>\n",
       "      <td>135.10</td>\n",
       "      <td>1297.0</td>\n",
       "      <td>0.10030</td>\n",
       "      <td>0.13280</td>\n",
       "      <td>0.1980</td>\n",
       "      <td>0.10430</td>\n",
       "      <td>0.1809</td>\n",
       "      <td>0.05883</td>\n",
       "      <td>...</td>\n",
       "      <td>16.67</td>\n",
       "      <td>152.20</td>\n",
       "      <td>1575.0</td>\n",
       "      <td>0.1374</td>\n",
       "      <td>0.2050</td>\n",
       "      <td>0.4000</td>\n",
       "      <td>0.1625</td>\n",
       "      <td>0.2364</td>\n",
       "      <td>0.07678</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   mean radius  mean texture  mean perimeter  mean area  mean smoothness  \\\n",
       "0        17.99         10.38          122.80     1001.0          0.11840   \n",
       "1        20.57         17.77          132.90     1326.0          0.08474   \n",
       "2        19.69         21.25          130.00     1203.0          0.10960   \n",
       "3        11.42         20.38           77.58      386.1          0.14250   \n",
       "4        20.29         14.34          135.10     1297.0          0.10030   \n",
       "\n",
       "   mean compactness  mean concavity  mean concave points  mean symmetry  \\\n",
       "0           0.27760          0.3001              0.14710         0.2419   \n",
       "1           0.07864          0.0869              0.07017         0.1812   \n",
       "2           0.15990          0.1974              0.12790         0.2069   \n",
       "3           0.28390          0.2414              0.10520         0.2597   \n",
       "4           0.13280          0.1980              0.10430         0.1809   \n",
       "\n",
       "   mean fractal dimension   ...    worst texture  worst perimeter  worst area  \\\n",
       "0                 0.07871   ...            17.33           184.60      2019.0   \n",
       "1                 0.05667   ...            23.41           158.80      1956.0   \n",
       "2                 0.05999   ...            25.53           152.50      1709.0   \n",
       "3                 0.09744   ...            26.50            98.87       567.7   \n",
       "4                 0.05883   ...            16.67           152.20      1575.0   \n",
       "\n",
       "   worst smoothness  worst compactness  worst concavity  worst concave points  \\\n",
       "0            0.1622             0.6656           0.7119                0.2654   \n",
       "1            0.1238             0.1866           0.2416                0.1860   \n",
       "2            0.1444             0.4245           0.4504                0.2430   \n",
       "3            0.2098             0.8663           0.6869                0.2575   \n",
       "4            0.1374             0.2050           0.4000                0.1625   \n",
       "\n",
       "   worst symmetry  worst fractal dimension  Cancer  \n",
       "0          0.4601                  0.11890       0  \n",
       "1          0.2750                  0.08902       0  \n",
       "2          0.3613                  0.08758       0  \n",
       "3          0.6638                  0.17300       0  \n",
       "4          0.2364                  0.07678       0  \n",
       "\n",
       "[5 rows x 31 columns]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Cancer'] = pd.DataFrame(cancer['target'])\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Exploratory Data Analysis\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Check the relative counts of benign (0) vs malignant (1) cases of cancer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x2cfe818b710>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nMAaSJOD/AB48Vtwfr/IbAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2cfe817afd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set_style('whitegrid')\n",
    "sns.countplot(x='Cancer',data=df,palette='RdBu_r')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Run a 'for' loop to draw boxlots of all the mean features (first 10 columns) for '0' and '1' CANCER OUTCOME"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nv68VK1Zo9+7dmjRpktsRAUdwnD6MtHfvXlVUVOjdd99VTMyXs5xNTU1KT0/X5s2bdeTIEXV2dmrm\nzJl64YUX1NnZqdWrVyslJUUfffSRJk+erOrqaiUlJcnn86murk6WZWnWrFnasGGDQqGQnn32WR05\nckR9fX1asWKFFi5cqJ07d+qtt95SV1eXsrOz9atf/crFdwKmYU4fRjp8+LBmzZp1ReFL0vz58/Xx\nxx9r3Lhxev311/Xuu+/qwoULampqkiT9+9//1vLly/XOO+/I6/XK5/Pp5MmTqqys1Isvvqjdu3er\nr69PTU1NqqurU1pamnbu3KmXX35ZW7du1bFjxyRJJ0+e1FtvvUXhI+qY3oGRYmJiNNgfuT/4wQ+U\nlJSkl19+WR9//LGOHj2q3t5eSdLkyZOVmpoqSUpJSdGZM2f0wQcfKCMjQ9/5znckSVVVVZKk2tpa\nnT9/Xn/6058kSb29vTpy5IgkKTU1lYvewRV818FI6enpeuWVV2TbtizLCj/+/PPP684771RNTY2W\nLVumxYsX6/PPPw//ghg/fnz4uZZlybbt/ynv06dPS7q836Cqqiq8Y7izs1Pf/OY35fP5FB8f7/SX\nCFwT0zswUlZWliZPnqwXXnhBfX19kqTm5mbt3LlTzc3Nuu+++/TQQw9pypQp2r9/f/g51zJr1iy1\ntrbq1KlTkqRNmzapsbFRd999t1599VVJUkdHh3784x/rxIkTzn9xwBAY6cNIlmWptrZWlZWVWrhw\noWJjYzVp0iTV19fL4/Ho17/+tf7yl78oLi5Os2fPVltb26Dr+va3v62nnnpKRUVF6u/v1+zZs7V4\n8WKdO3dO69ev18KFC9XX16c1a9Zo+vTp8vv9UfxKgStx9A4AGITpHQAwCKUPAAah9AHAIJQ+ABiE\n0gcAg1D6AGAQSh8ADPL/4WKlDh0ByagAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2cfe9662b70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nKysVUHOJBbZwnYCa86qsvOZ0GYAjvA7vzJo1S127dlVFRYXCwsIUERGhadOm+aI2AEAz89rTLysr\n09ChQ7Vq1SqFhITo1Vdf1eDBg31R221zuVyqvBrM0sq4zn2fzZXL1dLpMgBHeO3pBwYG6sKFC54V\nNo8fP66AAK8PAwD4Ia89/cmTJyslJUWnT5/WK6+8or1792rOnDm+qA0A0My8hn6vXr0UFRWl/fv3\nq7a2Vm+99ZbatWvni9oAAM3Ma+ifO3dOGzZs0Pnz5yVJhw8fliRNmjTJ3soAAM3O6+D82LFjr1tW\nGQBw57qpL0bPycm5pZ1eu3ZN6enpOnnypKqrqzVhwgT98Ic/1IwZM2RZliIjIzV79mwuCAOAj3kN\n/fj4eH3wwQfq2bOnAgMDPdsffPDBRh+zfv16tWrVSrm5uaqoqNCQIUPUuXNnTZkyRT169FBmZqaK\ni4uVkJDQPM8CAHBTvIb+hQsXVFBQoNatW3u2WZal4uLiRh8zYMAAJSYmSpLcbrcCAwN18OBBde/e\nXZLUu3dvbd++ndAHAB/zGvp/+tOftHPnToWGht70TsPCwiRJFy9e1OTJkzVlyhTNnTvXM9c/LCxM\nFy5cuKl9lZaW3vRxb1RdXf2dH4u7W3V19W2dW2he9e9V/k/s5zX027dvr/Pnz99S6EvS6dOnNXHi\nRI0YMUJJSUnKzc31/F1VVZVcLtdN7Sc2NvaWjvtNISEhki5/58fj7hUSEnJb51ZzGDNmjMrLyx2t\nwV9UVFRIkrKyspwtxE9ERERo6dKl3/nxTX14eg19y7L0zDPPKDIyUsHBwZ7tTX0x+tmzZzV69Ghl\nZmbqxz/+sSSpS5cu2rVrl3r06KGtW7eqZ8+et/IcgLtOeXm5Tn3+uWr/+5uxyeondfznJkcA7maB\nVVW27t9r6L/88su3vNPFixersrJSixYt0qJFiyRJb7zxht5++23NmzdPnTp18oz5AyarDQvTqRdf\ndLoM+JEH33/f1v17Df36i6+3IiMjQxkZGd/avnz58lve1+0KqKlkaWVJVu3Xw1zuQBYaC6iplMTr\nADPd1Dz9O1VERITTJfiN8vKvf22OuI+wk1pybsBYd3Xo386FkLtNUlKSJKmoqMjhSgA4iVtiAcAg\nhD4AGITQBwCDEPoAYBBCHwAMQugDgEEIfQAwCKEPAAYh9AHAIIQ+ABjkrl6GAfBnlZWVCrx0yfZV\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2cfe96926a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2cfeb728128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nAQEAMEVAAABMMR8EgEZpCrMdSk1nxsOWMNshAQGgWWHGw/CxGYZhWF3E/eJ2u5WSkmJ1GQDQrNxp\n38kYBADAFAEBADBFQAAATBEQAABTBAQAwBQBAQAwRUAAAEwREAAAUw/cldRut9vqEgDggfBAXUkN\nALh/OMQEADBFQAAATBEQAABTBAQAwBQBAQAwRUAAAEwREGigrq5Or732ml588UVlZmbq008/tbok\noIEjR44oMzPT6jJahAfuQjl8N7t371ZNTY22bt2qw4cP64033tDatWutLguQJK1fv147duxQ69at\nrS6lRaAHgQbcbrf69esnSerVq5eOHTtmcUXA/8XHxys/P9/qMloMAgINeL1euVyuwOOIiAjdunXL\nwoqA/0tPT1dkJAc+woWAQAMul0s+ny/wuK6ujj9IoIUiINBAcnKy9u7dK0k6fPiwEhMTLa4IgFX4\naYgGBg4cqP379+uXv/ylDMPQkiVLrC4JgEW4mysAwBSHmAAApggIAIApAgIAYIqAAACYIiAAAKY4\nzRVoBK/XqxUrVuijjz5SRESEYmNjNWfOHHXv3t3q0oCQISCAIOrq6pSVlaVnnnlGf/vb3xQZGakP\nP/xQWVlZ2rlzp9q0aWN1iUBIcB0EEMSBAwc0f/587dq1S3b7/4/KlpaWqkePHlq5cqVOnTqly5cv\nq3Pnzlq9erUuX76sadOmKSEhQSdPnlS7du20atUqxcXFqbi4WGvXrpXNZlPPnj21ePFi1dTU6PXX\nX9epU6dUW1urrKwsDRkyRNu3b9e7776ra9euacCAAXr55Zct/CTQ0jAGAQRx4sQJ9ezZs0E4SNJP\nfvITffLJJ4qKitLWrVu1a9cu+f1+lZaWSpLKy8v10ksv6R//+IdiY2NVXFysixcvaunSpXrrrbe0\nc+dO1dbWqrS0VGvXrlX37t21fft2bdy4UX/84x/12WefSZIuXryod999l3BA2HGICQjCbrfrTh3t\np59+WnFxcdq4caM++eQTnT17Vjdu3JAktWvXTt26dZMkJSQk6Pr16/r444+VnJysRx55RJK0fPly\nSVJBQYGqq6u1bds2SdKNGzd06tQpSVK3bt24YSIswbcOCKJHjx7atGmTDMOQzWYLtOfl5SkpKUn5\n+fkaN26cRowYof/+97+BMImOjg6sa7PZZBjGbTv6q1evSvpynGP58uWBQe/Lly/roYceUnFxsVq1\nahXqTQRMcYgJCCI1NVXt2rXT6tWrVVtbK0nat2+ftm/frn379mnw4MF64YUX1L59e3300UeBdcz0\n7NlTR44cUUVFhSRpyZIlKikp0bPPPqvNmzdLki5duqSf//znunDhQug3DvgW9CCAIGw2mwoKCrR0\n6VINGTJEkZGRatOmjdatW6eIiAj9/ve/17/+9S85HA716tVL586du+NrPfzww5o3b54mTJiguro6\n9erVSyNGjFBVVZUWLVqkIUOGqLa2VtnZ2YqPj1dZWVkYtxRoiLOYAACmOMQEADBFQAAATBEQAABT\nBAQAwBQBAQAwRUAAAEwREAAAU/8DqjoBtMxkiU8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2cfeb7d9860>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nSUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2cfeb817908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nyhdffMEf/vCHSNYoIi3YxIkTG5wWazTaU3j22Wf58MMPqaysrHdix+l08utf/zoStYmIkJqaSkpK\nijEt1mo0FAoKCgBYunSpkc7hcFiXpYpIxKmHEDmmYx/17t2brKwsAD7//HN+85vf8NFHH1lemIjI\neampqeolRIhpKMydO9d4rOb111/P0qVLeeKJJywvTEREIs80FM6ePUtSUpIx361bN10rLCLSTJle\nknr99dczb9487rnnHuDc4zh/+tOfWl2XiIhEgWlP4YknniAQCDBt2jSmT59OIBAgLy8vErWJiEiE\nmfYU2rVrV+/xm+FwmCNHjtCmTRtLCxMRkcgzDYXi4mKeeeYZampqjGXXXHMNpaWlF20XCoXIyclh\n3759uFwu8vLySEhIMNa/+eabLF++HIfDQVJSEjk5OQAXbSMiLVN5eTmg+xQiwTQUXn75ZV5//XUW\nLFjAAw88wD//+U/KyspMN1xaWkowGKSkpASfz0dhYSFFRUUAnDlzhgULFuDxeIiNjWXq1Kls3bqV\nurq6RtuISMu1dOlSQKEQCaah0KFDB6677jp69OjB/v37GTp0KH/9619NN+z1eklLSwMgOTmZXbt2\nGetcLhevvPIKsbGxwLmRD1u1asX27dsbbWP2WnL5gsEgoM9TmpZ9+/YZ90atWrWKHj16RLmi5s00\nFGJjY/nggw/o0aMHpaWl9OrVi6qqKtMN+/3+eo/udDgc1NbW4nQ6sdvtxmiHxcXFBAIB+vfvz9tv\nv91om4vp06ePaT1izuVyAfo8pWl54YUXjOm///3v/O53v4tiNc1HYz/+TK8+mjVrFlu2bCEtLY2T\nJ08yaNCgS3rojtvtprq62pgPhUL1du6hUIi5c+dSVlbGokWLsNlspm1ERMRapqHQvXt3Hn74Yfbs\n2cMf//hHduzYwX333We64ZSUFLZt2waAz+erdwMcwOzZszl79ixLliwxDiOZtRGRlkejpEaW6c/w\nsrIypk+fTnx8PKFQiKqqKhYsWEDv3r0v2m7gwIGUlZWRlZVFOBwmPz8fj8dDIBCgZ8+erF27ltTU\nVMaOHQvAmDFjGmwjIi2bRkmNLNNQKCgo4M9//jM33HADAJ988glz5sxh3bp1F21nt9uNMZPO69at\nmzG9d+/eBtt9u42IiHoIkWN6+MjlchmBANCrVy9LCxIRkegx7Sn07t2bRx55hHvvvReHw8GGDRu4\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2cfeb7a4a58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2cfeb8f9278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEFCAYAAAASWssjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X9UVPed//HnMOOoYURs/LEnm4rCkeSIuhSp0SZog1IT\nE/NDVKQ2niLV2CSrpm4qsSJEEGjc2nUNEuNJezY2P0isZkNs3QaM4lLXA2NGBZWkBjnVJP7YFHUG\n4ghzv39kma80wNXoMERej3Nyzr1z5977ngne13zuvZ/PtRiGYSAiItKJkGAXICIi3Z/CQkRETCks\nRETElMJCRERMKSxERMSULdgFBILT6Qx2CSIi30hjx45t9/WbMiyg4w8sIiLt6+yHtk5DiYiIKYWF\niIiYUliIiIgphYWIiJhSWEinqqqqqKqqCnYZIhJkN+3dUHJjvPTSSwDEx8cHuRIRCSa1LKRDVVVV\nHDhwgAMHDqh1IdLDBaxl4fP5yM7Opra2FrvdTm5uLhEREf7l7777Lv/xH/+B1WolOjqa7OxsgHbX\nqa+vJyMjA4vFwogRI8jKyiIkRDkXaK2titZptS5Eeq6AHXFLS0vxer0UFxezbNkyCgoK/Mu++OIL\n/u3f/o1XXnmFN954A7fbzfvvv9/hOvn5+SxdupTXXnsNwzAoKysLVNkiItKOgLUsnE4nCQkJAMTG\nxlJdXe1fZrfbeeONN+jbty8Azc3N9O7dm71797a7Tk1NDePGjQNg4sSJVFRUkJSUZLp/uT7f//73\nOXDggH9a36lIzxWwsHC73TgcDv+81WqlubkZm81GSEgIAwcOBGDLli00NjZy991388c//rHddQzD\nwGKxABAaGsrFixdN96/hPq7f2LFj2b17NwA//OEPg1uMiARcZz8IAxYWDocDj8fjn/f5fNhstjbz\na9eupa6ujg0bNmCxWDpc58rrEx6Ph7CwsECVLX9n4cKFwS5BRLqBgF2ziIuLo7y8HACXy0V0dHSb\n5atWreLSpUts3LjRfzqqo3VGjhzJ/v37ASgvL9eF1i4UHx+v71tEsBiGYQRiw613Q3344YcYhkFe\nXh5HjhyhsbGRUaNGkZycTHx8vP/00rx585g8efJX1omKiqKuro7MzEwuX75MZGQkubm5WK3WDvft\ndDp1GkpE5Bp1duwMWFgEk8LixmntX6HWhcjNr7Njp3pwS6fUg1tEQD24pRPqwS0irRQW0qG/78Et\nIj2XwkJEREwpLKRDkyZNandaRHoehYV0aM+ePe1Oi0jPo7AQERFTCgvp0JVDfWjYD5GeTWEhIiKm\nFBbSId06KyKtFBbSoSuHgr+aYeFF5OalsBAREVMKC+lQv3792p0WkZ5HYSEd0t1QItJKo85Kh+Lj\n44mLi/NPi0jPpbCQTqlFISIQwLBofVJebW0tdrud3NxcIiIi2rynqamJtLQ01qxZQ1RUFNu2bWP7\n9u0AXLp0iaNHj1JRUcHJkyd5/PHHGTZsGACpqalMmzYtUKXLFdSiEBEIYFiUlpbi9XopLi7G5XJR\nUFBAUVGRf/nhw4fJysri9OnT/tdmzJjBjBkzAHjuuedITk4mLCyMmpoa0tLSmD9/fqDKFRGRTgTs\nArfT6SQhIQGA2NhYqqur2yz3er0UFhYSGRn5lXUPHz7MX/7yF1JSUgCorq5m9+7dzJ07lxUrVuB2\nuwNVtoiItCNgLQu3243D4fDPW61Wmpubsdm+3GVnz8jetGkTTz75pH9+zJgxzJo1i1GjRlFUVERh\nYSHLly/vdP9Op/M6P4GIiLQKWFg4HA48Ho9/3ufz+YOiMxcuXKCuro7x48f7X0tKSiIsLMw/nZOT\nY7qdzsJIRES+qrMf2QE7DRUXF0d5eTkALpeL6Ojoq1qvsrKSCRMmtHktPT2dQ4cOAbBv3z5iYmJu\nbLHSoaqqKj1/W0QC17JISkqioqKCOXPmYBgGeXl5lJSU0NjY6L8W0Z66ujpuv/32Nq9lZ2eTk5ND\nr169GDhw4FW1LOTGaB1AUHdFifRsFsMwjGAXcaM5nU6dhroBqqqqWLRoEQAvvviiAkPkJtfZsVPD\nfUiHNES5iLRSWIiIiCmFhXRIAwmKSCuNDSUd0kCCItJKYSGdmjRpUrBLEJFuQKehpFN79uxhz549\nwS5DRIJMYSEdqqqq4sCBAxw4cEAd80R6OIWFdEi3zopIK12z6MbWr19PaWlp0Pb/v//7v/7p6upq\npk+fHrRaAKZMmcKSJUuCWoNIT6WWhXToylGDr5wWkZ5Hw31Ip773ve8B8Oc//znIlYhIoHV27NRp\nKOmUWhQiAgoLMdG7d+9glyAi3YCuWYiIiCmFhYiImFJYiIiIKYWFiIiYCtgFbp/PR3Z2NrW1tdjt\ndnJzc4mIiGjznqamJtLS0lizZg1RUVEAPProo/47cG6//Xby8/Opr68nIyMDi8XCiBEjyMrKIiRE\nOSci0lVMj7her5djx44BUFJSwi9/+UvOnDljuuHS0lK8Xi/FxcUsW7aMgoKCNssPHz7M3Llz+etf\n/+p/7dKlSxiGwZYtW9iyZQv5+fkA5Ofns3TpUl577TUMw6CsrOyaPqSIiFwf07B45pln+K//+i8O\nHjzIhg0bcDgcZGRkmG7Y6XSSkJAAQGxsLNXV1W2We71eCgsLiYyM9L927NgxmpqamD9/PvPmzcPl\ncgFQU1PDuHHjAJg4caI6iImIdDHT01AnT55k/fr1PP/888ycOZOFCxeSnJxsumG3292mQ5fVaqW5\nuRmb7ctdttdLsE+fPqSnpzNr1ixOnDjBggUL2LlzJ4ZhYLFYAAgNDeXixYum+3c6nabvEXNerxfQ\n9ynS05mGRUtLC59//jllZWVs2LCBs2fP8sUXX5hu2OFw4PF4/PM+n88fFB0ZPnw4ERERWCwWhg8f\nTnh4OGfPnm1zfcLj8RAWFma6fw33cWPY7XZA36dIT9DZj0LT01A/+clPmD17NpMmTSI6Opof/ehH\nPPnkk6Y7jYuLo7y8HACXy0V0dLTpOlu3bvVf2zh9+jRut5tBgwYxcuRI9u/fD0B5ebke8Ski0sVM\nWxYDBgxoM0z2H/7wh6u6wJyUlERFRQVz5szBMAzy8vIoKSmhsbGRlJSUdteZOXMmzz77LKmpqVgs\nFvLy8rDZbCxfvpzMzEzWrVtHZGQkU6dOvYaPKCIi16vDUWf/8Ic/4PV6+fd//3cWL17sf725uZlN\nmzbx3nvvdVmR10qjzt44rc+wKCkpCXIlIhJoX2vUWbfbzQcffIDH4/GfAoIvL1Q//fTTN75KERHp\ntjoMi9mzZzN79mz27dvHhAkTurImERHpZkyvWfTv35/Fixdz/vx5rjxj9corrwS0MBER6T5Mw2L5\n8uWkpKQwYsQIf18HERHpWUzDok+fPvzoRz/qilpERKSbMg2Le+65hy1btnDPPfe0eWrabbfdFtDC\nRESk+zANi//8z/8E4Le//a3/NYvFosH8RER6ENOw2LVrV1fUISIi3ViHYbFhwwb++Z//mWeffbbd\n5a3Dh4uIyM2vw7CIiYkB8A8NLiIiPVeHAwkmJiYCXz65LiYmBo/Hw/nz57nzzjt59NFHu6xAEREJ\nPtNRZ99++22eeOIJTp48ySeffMJTTz3F1q1bu6I2ERHpJkwvcP/2t7/lrbfeYsCAAQAsWrSIefPm\nMXPmzIAXJyIi3YNpy8Ln8/mDAuBb3/qWenKLiPQwpi2LO+64gzVr1vhbElu3buXOO+8MeGEiItJ9\nmLYscnNzsdvtrFixgmeffRabzUZWVlZX1CYiIt3EVY0NNX/+fMaMGYPNZiM+Ph6Hw2G6YZ/PR3Z2\nNrW1tdjtdnJzc4mIiGjznqamJtLS0lizZg1RUVFcvnyZFStWcOrUKbxeLz/96U+ZPHkyR44c4fHH\nH2fYsGEApKamMm3atK/3iUVE5Jpd1XAfzz//PGPHjqWlpYXs7Gxyc3OZNGlSp+uVlpbi9XopLi7G\n5XJRUFBAUVGRf/nhw4fJysri9OnT/tfeeecdwsPDWbt2LQ0NDTzyyCNMnjyZmpoa0tLSmD9//nV8\nVBER+bpMw6KoqIht27YxZMgQAE6dOsWiRYtMw8LpdJKQkABAbGws1dXVbZZ7vV4KCwv5+c9/7n/t\nvvvu8z9f2zAMrFYrANXV1dTV1VFWVkZERAQrVqy4qtaNiIjcGKZh4XA4GDRokH/+H//xH+nVq5fp\nht1ud5sDutVqpbm5GZvty12295zX0NBQ/7qLFy9m6dKlAIwZM4ZZs2YxatQoioqKKCwsZPny5Z3u\n3+l0mtYo5rxeL6DvU6SnMw2L6OhoFixYQHJyMlarlT/+8Y8MHjyYt99+G4BHHnmk3fUcDgcej8c/\n7/P5/EHRmU8//ZQnn3ySH/7wh0yfPh2ApKQkwsLC/NM5OTmm2+nooeNybex2O6DvU6Qn6OxHoend\nUIZhMHjwYPbu3cvu3bvp27cvAwYMYP/+/ezfv7/D9eLi4igvLwfA5XIRHR1tWui5c+eYP38+zzzz\nTJtOf+np6Rw6dAiAffv2+cetEhGRrmH6U//rji6blJRERUUFc+bMwTAM8vLyKCkpobGxkZSUlHbX\nefHFF7lw4QIbN25k48aNAGzevJns7GxycnLo1asXAwcOvKqWhYiI3DgWwzCMYBdxozmdTp02uUFa\nTwWWlJQEuRIRCbTOjp2mp6FERESuOizOnz8fyDpERKQbMw2Lo0ePct999/Hwww9z+vRpkpKSqKmp\n6YraRESkm7iqsaEKCwsJDw9nyJAhZGdna2woEZEexjQsmpqaiIqK8s/ffffd/o5aIiLSM5iGRXh4\nOMeOHfM/w+Kdd96hf//+AS9MRES6D9N+FtnZ2SxfvpyPPvqI+Ph4IiIi+Nd//deuqE1ERLoJ07Dw\neDy8/vrrNDY24vP5NICfiEgPZBoWK1euxOv1Mn36dKZPn66wEBHpgUzD4ve//z0nTpxgx44dLFy4\nkPDwcB566CFmzZrVFfWJiEg3cFWd8oYNG0ZaWhoLFy7E4/GwefPmQNclIiLdiGnL4k9/+hPvvvsu\nhw4d4vvf/z4rV64kLi6uK2oTEZFuwjQsSkpKePjhh/nVr351VQ89EhGRm49pWGzYsIEjR45w8OBB\nDMOgpaWFkydPtnnehIiI3NxMw2L58uV88MEHnD9/nsjISI4dO0ZcXJzCQkSkBzG9wF1ZWcmOHTuY\nOnUqOTk5vPnmmxruQ0SkhzFtWQwePJhevXoRFRVFbW0tDzzwQJtna9+M0tPTOXPmTLDL6BZav4fW\nhyD1dIMHD+bll18OdhkiXc40LIYMGcKmTZuYMGECa9euBaCxsdF0wz6fj+zsbGpra7Hb7eTm5hIR\nEdHmPU1NTaSlpbFmzRqioqI6XKe+vp6MjAwsFgsjRowgKyuLkJDAPbfpzJkzfPLpaXy2sIDt45vC\n4vvyT+Tk2aYgVxJ8Ic0Xgl2CSNCYhsWaNWvYs2cPY8aM4Qc/+AE7duwgOzvbdMOlpaV4vV6Ki4tx\nuVwUFBRQVFTkX3748GGysrI4ffq06Tr5+fksXbqUu+66i1WrVlFWVkZSUtLX+8RXyWcL42zU8oDu\nQ75ZBh3/ZbBLEAka05/nFouFhoYGAH7wgx8QHR3NP/3TP5lu2Ol0kpCQAEBsbCzV1dVtlnu9XgoL\nC4mMjDRdp6amhnHjxgEwceJE/vznP1/NZxMRkRvEtGWxbNky7rjjDgBCQ0MxDIOf//znbNiwodP1\n3G53m3GkrFYrzc3N2Gxf7rK9h4J3tI5hGP4h0kNDQ7l48aLpB3M6nabv6Ygu4EtHvF7vdf1tiXxT\nmYbFJ598wosvvgiAw+Hg6aef5uGHHzbdsMPhaHMh3Ofz+YPiWte58vqEx+MhLMz8WkJ7YXS17HY7\noHP08lV2u/26/rZEurPOfghd1Wmo2tpa//zx48dND/oAcXFxlJeXA+ByuYiOjv7a64wcOZL9+/cD\nUF5eTnx8vOm2RETkxrmqTnnz589nyJAhAPztb3/j+eefN91wUlISFRUVzJkzB8MwyMvLo6SkhMbG\nRlJSUq56ndYaMjMzWbduHZGRkUydOvVaPqOIiFwni2EYhtmbvF4vH374ITabjcjIyP87TdN9OZ3O\n6zpVMH36dE6ebdLdUNLGoOO/5PZBfSkpKQl2KSIB0dmx07RlcerUKX73u99x/vx5rsyV/Pz8G1eh\niIh0a6ZhsXTpUuLj44mPj/ffkSQiIj2LaVg0NzezfLlOx4iI9GSmd0ONHTuWXbt2qe+BiEgPZtqy\n2LlzJ7/73e/avGaxWDh69GjAihIRke7FNCz++7//uyvqEBG5ZlVVVQDqe9UFTMOiqamJF154gX37\n9tHS0sL48eNZsmQJt9xyS1fUJyLSoZdeeglQWHQF07BYvXo1ffv29XeQe/PNN8nKyvIPV34zunDh\nAiHNjRplVNoIaT7PhQuXg12G/J+qqioOHDjgn1ZgBJZpWNTU1PDOO+/451etWsW0adMCWpSIiJnW\nVkXrtMIisEzDwjAMLly44B+878KFC1it1oAXFkxhYWFcuNRLPbiljUHHf0lYWN9glyESFKZh8eMf\n/5iZM2eSmJgIwK5du1i4cGHACxMR6czChQtZtGiRf1oCyzQskpOTGT16NJWVlfh8Pl544YWrGkFW\nRCSQ4uPjiYuL809LYJl2yqutraWoqIi5c+fyve99j+eee46PP/64K2oTEelUZGRkm6dtSuCYhkVm\nZiaPPvooAFFRUTzxxBP84he/CHhhIiJmdu7cyc6dO4NdRo9gGhZNTU1MnDjRP3/33XfT1KSnyIlI\ncL366qu43W7cbjevvvpqsMu56ZmGxbe+9S1ef/11PB4PHo+Ht956i1tvvbUrahMR6dDmzZvbnZbA\nMA2L/Px8du/ezT333ENiYiK7d+9mzZo1XVGbiIh0E6Z3Q912221s2rTpmjfs8/nIzs6mtrYWu91O\nbm4uERER/uW7du2isLAQm81GcnIys2fPZtu2bWzfvh2AS5cucfToUSoqKjh58iSPP/44w4YNAyA1\nNVUdA0V6uAULFvDrX//aPy2BZRoWX1dpaSler5fi4mJcLhcFBQUUFRUBcPnyZfLz89m6dSt9+/Yl\nNTWVxMREZsyYwYwZMwB47rnnSE5OJiwsjJqaGtLS0pg/f36gyhWRb5g77rij3WkJjICFhdPpJCEh\nAYDY2Fiqq6v9y44fP87QoUPp378/8OUzMyorK7n//vsBOHz4MH/5y1/IysoCoLq6mrq6OsrKyoiI\niGDFihU4HA7T/X9denaHdMTr9V7X35bcOOvWrWszvWzZsiBWc/MLWFi43e42B3Sr1UpzczM2mw23\n202/fv38y0JDQ3G73f75TZs28eSTT/rnx4wZw6xZsxg1ahRFRUUUFhaaPr2vo4eOXw273Q7oji/5\nKrvdfl1/W3LjXHl8cTgc+v9yA3T2Q8j0AvfevXuZMWMGU6ZMYfLkySQmJjJ58mTTnTocDjwej3/e\n5/Nhs9naXebxePzhceHCBerq6hg/frx/eVJSEqNGjfJPHzlyxHT/InJzu3KIDw33EXimLYvc3Fwy\nMjIYMWIEFovlqjccFxfH+++/z7Rp03C5XG2GCImKiqK+vp6GhgZuueUWqqqqSE9PB6CyspIJEya0\n2VZ6ejqZmZmMGTOGffv2ERMTc9V1iMjNqbS0tM20hvwILNOwGDBgAPfee+81bzgpKYmKigrmzJmD\nYRjk5eVRUlJCY2MjKSkpZGRkkJ6ejmEYJCcnM2TIEADq6uq4/fbb22wrOzubnJwcevXqxcCBA8nJ\nybnmekTk5rJt27Y20xkZGUGs5uZnGhZjx44lPz+fhIQEevfu7X/9u9/9bqfrhYSEsHr16javRUVF\n+acTExP9I9le6Sc/+clXXouJieGNN94wK1VERALENCwOHToE0OY6gcVi4ZVXXglcVSIiJmbMmMHW\nrVv90xJYpmGxZcuWrqhDROSafPvb3253WgLDNCyqqqp4+eWXaWxsxDAMfD4fn3zyCbt27eqK+kRE\n2lVYWNhmeu7cuUGs5uZnGhYrV65kwYIFbN++nccee4zy8nJGjhzZFbUFVUjzBQYd/2Wwywg6S8uX\n/U0Mqx4nGtJ8AdD30F1c2XlWHWkDzzQs+vTpQ3JyMqdOnSIsLIzc3Nyb/vzg4MGDg11Ct3HmzEUA\nBg/SQRL66m+jG7HZbDQ3N/unJbBMv+HevXvT0NDA8OHDOXjwIBMmTKCxsbEragual19+OdgldBvT\np08HoKSkJMiViLQVHh7OuXPn/NMSWKY9uH/84x/z9NNPc++99/L222/zwAMP+HtTi4gEy5VDBF05\nLYFh2rK4//77ue+++7BYLGzbto0TJ05w5513dkVtIiId8vl87U5LYJi2LM6fP09mZibz5s3j0qVL\nbNmyhYsXL3ZFbSIiHVJYdC3TsMjMzGT06NE0NDQQGhrK4MGDeeaZZ7qiNhGRDrW0tLQ7LYFhehrq\n5MmTpKSk8Prrr2O323n66ad56KGHuqI2Eemm1q9f32Ygv2AwDKPNdOvNGMEwZcoUlixZErT9dwXT\nloXVauXixYv+EWdPnDhBSIjpaiIiAXXlM3GunJbAMG1ZLF68mMcee4xPP/2UJ554ApfLRV5eXlfU\nJiLd1JIlS7rFL+nWYcnff//9IFdy8zMNi4SEBGJiYjh06BAtLS2sXr2agQMHdkVtIiKdUoui65iG\nxeeff86OHTs4f/48AEePHgXgqaeeCmxlIiImrny0qgSW6cWHBQsW6DGmIiI93FUNqJKfn3/NG/b5\nfGRnZ1NbW4vdbic3N5eIiAj/8l27dlFYWIjNZiM5OZnZs2cD8Oijj/p/Ldx+++3k5+dTX19PRkYG\nFouFESNGkJWVpYvsIiJdyDQspkyZwltvvcX48eOxWq3+12+77bZO1ystLcXr9VJcXIzL5aKgoICi\noiIALl++TH5+Plu3bqVv376kpqaSmJhIv379MAzjK8/QyM/PZ+nSpdx1112sWrWKsrIykpKSvs7n\nFRGRr8E0LC5evMhLL73EgAED/K9ZLBbKyso6Xc/pdJKQkABAbGws1dXV/mXHjx9n6NCh9O/fH/jy\n0a2VlZXcdtttNDU1MX/+fJqbm/nZz35GbGwsNTU1jBs3DoCJEydSUVGhsBAR6UKmYfGnP/2Jffv2\n0adPn2vasNvtbnPxyWq10tzcjM1mw+12t7mLITQ0FLfbTZ8+fUhPT2fWrFmcOHGCBQsWsHPnTgzD\n8PfzCA0NvarhRpxO5zXVK+1rfU6Avk/pjvT32XVMw+Lb3/4258+fv+awcDgceDwe/7zP5/OPOf/3\nyzweD/369WP48OFERERgsVgYPnw44eHhnD17ts31CY/HQ1hYmOn+x44de031Svvsdjug71O6J/19\n3lidha7pVWKLxcIDDzxAamoq8+bN8/9nJi4ujvLycgBcLhfR0dH+ZVFRUdTX19PQ0IDX66Wqqorv\nfOc7bN26lYKCAgBOnz6N2+1m0KBBjBw5kv379wNQXl7u74gjIiJdw7RlsWjRoq+14aSkJCoqKpgz\nZw6GYZCXl0dJSQmNjY2kpKSQkZFBeno6hmGQnJzMkCFDmDlzJs8++yypqalYLBby8vKw2WwsX76c\nzMxM1q1bR2RkJFOnTv1aNYmIyNdjMa4cjesm4XQ61Sy9QfSkPOnO9Pd5Y3V27FRnBRERMaWwEBER\nUwoLERExpbAQERFTCgsRETGlsBAREVMKCxERMaWwEBERUwoLERExpbAQERFTCgsRETF1VY9VFZHu\nIz09nTNnzgS7jG6h9XtoHSOqpxs8eDAvv/xyQLatsBD5hjlz5gyffPYZLaGhwS4l6FqfdfPXq3gg\n2s3OesUzggJBYSHyDdQSGsons2cHuwzpRm57882Abl/XLERExJTCQkRETCksRETEVMCuWfh8PrKz\ns6mtrcVut5Obm0tERIR/+a5duygsLMRms5GcnMzs2bO5fPkyK1as4NSpU3i9Xn76058yefJkjhw5\nwuOPP86wYcMASE1NZdq0aYEqXURE/k7AwqK0tBSv10txcTEul4uCggKKiooAuHz5Mvn5+WzdupW+\nffuSmppKYmIie/bsITw8nLVr19LQ0MAjjzzC5MmTqampIS0tjfnz5weqXBER6UTAwsLpdJKQkABA\nbGws1dXV/mXHjx9n6NCh9O/fH4CxY8dSWVnJfffdx9SpUwEwDAOr1QpAdXU1dXV1lJWVERERwYoV\nK3A4HKb7l+vn9XoBfZ/dSev/E5G/5/V6A/ZvNWBh4Xa72xzQrVYrzc3N2Gw23G43/fr18y8LDQ3F\n7XYT+n/3jbvdbhYvXszSpUsBGDNmDLNmzWLUqFEUFRVRWFjI8uXLO91/Rw8dl2tjt9sBfZ/dyRdf\nfIG1sTHgt0rKN4vV4+ELw7iuf6udBU3ALnA7HA48V3QS8fl82Gy2dpd5PB5/eHz66afMmzePhx9+\n2N8rMykpiVGjRvmnjxw5EqiyRUSkHQFrWcTFxfH+++8zbdo0XC4X0dHR/mVRUVHU19fT0NDALbfc\nQlVVFenp6Zw7d4758+ezatUqJkyY4H9/eno6mZmZjBkzhn379hETExOoskW6vbCwMM5bLOqUJ23c\n9uabhF1xxuZGC1hYJCUlUVFRwZw5czAMg7y8PEpKSmhsbCQlJYWMjAzS09MxDIPk5GSGDBlCbm4u\nFy5cYOPGjWzcuBGAzZs3k52dTU5ODr169WLgwIHk5OQEquxuZf369ZSWlga1hu409s6UKVNYsmRJ\nsMsQ6ZECFhYhISGsXr26zWtRUVH+6cTERBITE9ssX7lyJStXrvzKtmJiYnjjjTcCU6h0qk+fPsEu\nQUS6AY0N1Y0tWbJEv6RFpFtQD24RETGlsBAREVM6DSXyDWT1eNTPAgi5dAkAX+/eQa4k+KweD3wT\n74YSkcAYPHhwsEvoNs40NQEwOIAHyW+Mfv0C+rehsBD5hgnUYzO/iVpv6S4pKQlyJTc/XbMQERFT\nCgsRETGlsBAREVMKCxERMaWwEBERUwoLERExpbAQERFTCgsRETGlsBAREVMKCxERMRWw4T58Ph/Z\n2dnU1tYE2KqMAAAGN0lEQVRit9vJzc0lIiLCv3zXrl0UFhZis9lITk5m9uzZHa5TX19PRkYGFouF\nESNGkJWVRUiIck5EpKsE7IhbWlqK1+uluLiYZcuWUVBQ4F92+fJl8vPz+c1vfsOWLVsoLi7m3Llz\nHa6Tn5/P0qVLee211zAMg7KyskCVLSIi7QhYy8LpdJKQkABAbGws1dXV/mXHjx9n6NCh9O/fH4Cx\nY8dSWVmJy+Vqd52amhrGjRsHwMSJE6moqCApKSlQpYuIie7wfHjoPs+I7wnPhw9YWLjdbhwOh3/e\narXS3NyMzWbD7XbT74ohhUNDQ3G73R2uYxgGFovF/96LFy+a7t/pdN7ATyMiV/rss8/wer3BLoNe\nvXoBBL2Wzz777KY/5gQsLBwOBx6Pxz/v8/mw2WztLvN4PPTr16/Dda68PuHxeAgLCzPd/9ixY2/E\nxxCRdujf182ps8AL2DWLuLg4ysvLAXC5XERHR/uXRUVFUV9fT0NDA16vl6qqKr7zne90uM7IkSPZ\nv38/AOXl5cTHxweqbBERaYfFMAwjEBtuvbPpww8/xDAM8vLyOHLkCI2NjaSkpPjvhjIMg+TkZObO\nndvuOlFRUdTV1ZGZmcnly5eJjIwkNzcXq9Xa4b6dTqd++YiIXKPOjp0BC4tgUliIiFy7zo6d6qwg\nIiKmFBYiImJKYSEiIqYUFiIiYkphISIipgLWKS/YbvbelCIiXemmvHVWRERuLJ2GEhERUwoLEREx\npbAQERFTCgsRETGlsBAREVMKCxERMaWwkA75fD5WrVpFSkoKjz32GPX19cEuSaSNgwcP8thjjwW7\njB7hpu2UJ9evtLQUr9dLcXExLpeLgoICioqKgl2WCACbN2/mnXfeoW/fvsEupUdQy0I65HQ6SUhI\nACA2Npbq6uogVyTy/w0dOpQNGzYEu4weQ2EhHXK73TgcDv+81Wqlubk5iBWJ/H9Tp07FZtPJka6i\nsJAOORwOPB6Pf97n8+kfp0gPpbCQDsXFxVFeXg6Ay+UiOjo6yBWJSLDoZ6J0KCkpiYqKCubMmYNh\nGOTl5QW7JBEJEo06KyIipnQaSkRETCksRETElMJCRERMKSxERMSUwkJEREzp1lmRa+R2u/nVr35F\nZWUlVquVsLAwMjIyiImJCXZpIgGjsBC5Bj6fjwULFnDXXXfx9ttvY7PZ+J//+R8WLFjAjh07GDBg\nQLBLFAkI9bMQuQb79u1j5cqVvPfee4SE/P+zuHv27GHUqFH8+te/5qOPPuLcuXMMHz6cF154gXPn\nzvHUU08xYsQIjh49yq233sr69esJDw+npKSEoqIiLBYLo0ePJicnB6/Xy+rVq/noo49oaWlhwYIF\nPPjgg2zbto3t27fT0NDAvffey89+9rMgfhPS0+iahcg1OHLkCKNHj24TFACTJk3i448/plevXhQX\nF/Pee+9x6dIl9uzZA8CxY8dIS0vj3XffJSwsjJKSEk6fPk1+fj6/+c1v2LFjBy0tLezZs4eioiJi\nYmLYtm0br776Ki+++CJ//etfATh9+jTbt29XUEiX02kokWsQEhJCR43x7373u4SHh/Pqq6/y8ccf\nc+LECRobGwG49dZbGTlyJAAjRozg/PnzfPDBB8TFxfEP//APAKxduxaAjRs38sUXX/D73/8egMbG\nRj766CMARo4cqcEcJSj0VydyDUaNGsVrr72GYRhYLBb/6+vWrWPMmDFs2LCBefPmMWPGDP72t7/5\ng6V3797+91osFgzD+MpB//PPPwe+vC6ydu1a/wXzc+fO0b9/f0pKSujTp0+gP6JIu3QaSuQaxMfH\nc+utt/LCCy/Q0tICwN69e9m2bRt79+7l/vvvJzk5mYEDB1JZWel/T3tGjx7NwYMHOXv2LAB5eXmU\nlZUxfvx4Xn/9dQDOnDnDQw89xKeffhr4DyfSCbUsRK6BxWJh48aN5Ofn8+CDD2Kz2RgwYAAvvfQS\nVquVf/mXf2Hnzp3Y7XZiY2M5efJkh9saMmQIv/jFL0hPT8fn8xEbG8uMGTNoamoiOzubBx98kJaW\nFp555hmGDh1KVVVVF35SkbZ0N5SIiJjSaSgRETGlsBAREVMKCxERMaWwEBERUwoLERExpbAQERFT\nCgsRETH1/wC1al9cp6utMQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2cfeb998668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2cfeba299b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2cfebabb668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "l=list(df.columns[0:10])\n",
    "for i in range(len(l)-1):\n",
    "    sns.boxplot(x='Cancer',y=l[i], data=df, palette='winter')\n",
    "    plt.figure()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Not all the features seperate out the cancer predictions equally clearly\n",
    "**For example, from the following two plots it is clear that smaller area generally is indicative of positive cancer detection, while nothing concrete can be said from the plot of mean smoothness**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x2cfed42c390>"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nTpns7Gy3gd3hcJihQ4eaoUOHmm3btpl9+/aZRx55xHTu3Nk14I4dO9aEh4ebhQsXmoSEBPPFF1+Y\nNm3amC+//NKyjYmJiaZLly5mypQpZv/+/Wbr1q1m8ODB5vbbbzcOh8PyGBQ2depUEx4ebubNm2cS\nEhLMwoULTVhYmOnbt69Zt26d2bdvnxk+fLgZMWKEMcaUqi8/99xzpm/fvmbr1q0mMTHRfPPNN6ZD\nhw7mvffeK/VxLmzQoEFm0qRJZt++fSY+Pt4sWLDAhIWFuQYuq+tn6dKlpkePHmbVqlUmISHBfPnl\nlyYyMtI1wHvqo/gd4ynjKeNp7RhPPfW9/O3dc889Zv/+/eaHH34w7dq1M927dzfvv/++iYuLMzNm\nzDDt27c3qampxhhjnn/+eXPdddeZVatWmUOHDpk33njDXHvttebbb781xhizevVq07ZtW7No0SJz\n+PBh880335hu3bqZ2bNnG2OM2b17twkLCzOrV682aWlprqAcFRVl1q9fbw4fPmweeugh06lTJ9c/\nEDyd3z179piIiAjzzjvvmPj4eLNp0yYzcOBA1zXq6Zp58MEHzaRJk8zBgwdNXFycmTx5srnlllss\nj2m+GheUf/nlFxMWFmY2btzocdmEhATzzjvvGKfT6Zq2efNmExYWZo4fP26MOT+wP/LII27rde3a\n1fUNxGOPPWbGjh3rNv+LL74wX331ldm4caNp27atSU9Pd5vfr18/8+abbxpjzl9gN9xwQ4l1lrSP\nM2fOmLfeesvViYw5/y1P/s0nJSXFXHvttWbJkiWudh48eND1LdDLL79s7rjjDrdtnzhxwoSFhZlf\nfvnF1ZG///571/zY2Fhz6NAhy1r37NljPv74Y7dpn376qWnTpo0xxpg1a9aY9u3bm127drnmx8TE\nmGPHjllu7+effzYrVqxwm/bKK6+U2HHvvvtuM3XqVNfn0gzsYWFhbv8Sf//9903Hjh2NMcbExcWZ\nsLAws2XLFtf8s2fPmrlz55pTp06ZL7/80oSFhbnmFRzYf/jhBxMWFuZ2vHJyckyvXr1c39KNHTvW\nNYDmu/32282sWbMs2zd//nzTu3dvY7fbXdPyA03+eSp8DAqbOnWqiYqKcvWJzMxMExYWZl555RXX\nMkuXLnUdg9L05S+//NJs27bNbf6YMWPM9OnTXcelpONcWHZ2tlm8eLE5ceKEa1pubq5p06aNa1Cz\n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\n3Llz9c033+jMmTP6z3/+U+w+a1xQls5/dX7FFVdo9OjR+vrrr5WYmKhff/1VDz/8sLZu3aq//vWv\n8vLyUrNmzXTs2DFt3LhRx44d07///W/94x//kCTXj0g8mTBhgrZu3arXX39dCQkJWr16tT788EPd\nfPPN6tmzpzp16qRHH31U27Zt0+HDh/X0009r3bp1CgsLK3V7StpHs2bNlJGRodWrV+vYsWP67rvv\nXN822O12NWjQQKtWrdKsWbMUFxenuLg4rVq1Si1atFCDBg00duxYpaWladq0adq/f7927dqlxx9/\nXPHx8brqqqsUEhKipUuX6uWXX9aRI0e0d+9eff/9924/NiuoWbNm2rdvn7Zv367ExER99NFH+uCD\nD1z1+Pn5aeHChfrwww9d5+Xnn39Wx44di91eTEyM9u3bp/j4eL322mtauXJlqc+PJHXq1Ek//fST\nfvrpJ8XHx+u5555TWlpaqddv1aqVbrnlFj333HPatm2b4uLiNH36dIWEhCgiIkJ169aVdH4gyszM\ndFu3R48e6ty5s5544gnFxMTowIEDmj59utLS0hQdHV3qGgoaO3as0tPTNX36dP3222/atm2bnnji\nCbVp00Y9e/a8oG164qkvBwcHKzg4WN99952OHDmiPXv2aMqUKUpKSirTuSqoefPmkqQVK1bo2LFj\n2rx5sx599FFJJV+ff/nLX/T+++9r+fLlOnLkiFasWKF58+apSZMmkjz3UbhjPGU8LYjx9OJVxXha\n1r7nSWBgoO655x4tWLBA3377reLj47Vo0SKtWbNG99xzj6TzY/GqVav09ttvKz4+XqtWrdI///lP\n3XnnnQoJCXGd6/3797v+QXqx7rvvPu3cuVNz585VXFyc/vOf/2jq1KlKT09XkyZNSrxmfH19tXv3\nbj3zzDPasWOHEhMTtXz5cvn5+Sk8PLzYfdbIoFy3bl0tWbJEgwYN0muvvaZBgwbpoYcektPp1PLl\ny9W1a1dJ0vjx49W3b1899thjGjJkiJYuXarnnntOQUFBpf6LU+Hh4Xr11Vf17bffauDAgXrxxRf1\n2GOPacSIEfLy8tLChQt1zTXXaPLkyRo2bJji4+O1ePHiMv3rt6R93Hbbbbr77rv1wgsvaODAgXrl\nlVc0efJktWzZUrt27VJISIjefvttJSYm6q677tKIESNkt9u1aNEieXt7q0mTJnrvvfd05swZ3XXX\n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\nn66EhASNGjVKo0eP1rPPPiun0ylJ+uSTT3THHXforrvu0vfff1/FVZfejh07NG7cOEkqU9tsNpse\neughjR49Wvfdd5/Onj1bZW0orYJt3bNnj6KiolznduXKlZJqfltzc3P15JNPavTo0RoxYoS+++67\nWnterdpaW89rZXM6nXrmmWcUHR2tcePGKSEhwW3+unXrNHz4cEVHR+uTTz5xm5ecnKxevXopLi6u\n2tb51ltvKTo6WnfccYf+93//t9rVmJubqylTpmjkyJEaPXp0tTiWkpSdna2RI0e66inNOlVdo9U4\nUd1qzFedrp3i6qxO145VjRd97RiUic1mM7fffrvbtEmTJpktW7YYY4yZOXOmWbNmjTl16pQZNGiQ\nycnJMWlpaa7/ru4WLVpkBg0aZO68805jTNna9u6775p//vOfxhhjvv76a/P8889XWTtKo3BbP/nk\nE7N48WK3ZWpDWz/99FPzwgsvGGOMSUlJMb169aq159WqrbX1vFa21atXm6lTpxpjjPn111/N/fff\n75pnt9vNH//4R5OammpycnLMHXfcYU6fPu2aN3nyZNOvXz9z8ODBalnnli1bzKRJk0xeXp7JyMhw\n9YHqVOP//d//mYcfftgYY8yGDRvMgw8+WKE1eqrTGGN27txphg0bZq6//nrXufW0TnWo0WqcqG41\nGlO9rp3i6qxO105xNV7stcM3ymW0b98+ZWdna8KECRo/fry2b9+u3bt3q3v37pKkm266SZs2bdLO\nnTvVuXNn+fv7KyQkRC1atNC+ffuquHrPWrRooVdffdX1uSxti4mJUVRUlGvZzZs3V0kbSqtwW2Nj\nY/XDDz9ozJgxeuqpp5SRkVEr2nrrrbfqkUcekSQZY+Tj41Nrz6tVW2vrea1sBY9Np06dFBsb65oX\nFxenFi1aqH79+vL391dkZKS2bt0qSZo/f75Gjhypyy67rNrWuWHDBoWFhemBBx7Q/fffr969e1e7\nGlu1aqW8vDw5nU5lZGTI19e3Qmv0VKck2e12LVy4UFdffXWp16kONVqNE9WtRql6XTvF1Vmdrp3i\narzYa6fir7RaJjAwUBMnTtSdd96p+Ph43XfffTLGyMvLS5JUt25dpaenKyMjQyEhIa716tatq4yM\njKoqu9T69++vo0ePuj6XpW0Fp+cvW50VbmtERITuvPNOtW/fXm+88YYWLlyoNm3a1Pi21q1bV5KU\nkZGhhx9+WI8++qjmz59fK8+rVVvtdnutPK+VLSMjQ8HBwa7PPj4+cjgc8vX1LbbvfP7552rYsKGi\noqK0aNGialtnSkqKjh8/rjfffFNHjx7VX/7yF3377beua6Q61BgUFKRjx47ptttuU0pKit58880K\nqa20dUrWf+3M0zrVoUarcaIiXUiN1e3aKa7O6nTtFFfjxV47fKNcRq1atdKQIUPk5eWlVq1aKTQ0\nVMnJya75mZmZqlevnoKDg5WZmek2veDgV1N4e//eRTy1reD0/GVrkr59+6p9+/au/96zZ0+taWtS\nUpLGjx+v22+/XYMHD67V57VwW2vzea1MhY+Z0+l03ZyKO56fffaZNm3apHHjxmnv3r2aOnWqTp8+\nXe3qDA0N1Y033ih/f39dffXVCggIqNDn0y+kxvfff1833nijVq9erX//+9+aNm2acnJyKqxGT3WW\n5zqVXaNUdJyoSBdSY3W7dopTna6d4lzstUNQLqNPP/1U8+bNkySdPHlSGRkZuuGGG/Tzzz9Lktav\nX6+uXbsqIiJCMTExysnJUXp6uuLi4hQWFlaVpV+Qdu3albptXbp00Y8//uha9mL+tnpVmDhxonbu\n3ClJ2rx5s8LDw2tFW8+cOaMJEyboySef1IgRIyTV3vNq1dbael4rW5cuXbR+/XpJ0vbt293Gs9at\nWyshIUGpqamy2+3atm2bOnfurKVLl2rJkiX66KOP1LZtW82fP19NmjSpdnVGRkbqp59+kjFGJ0+e\nVHZ2tkJDQ6tVjfXq1XN92VK/fn05HA7l5eVVWI2e6izPdSq7RqtxoiJdSI3V7dopTnW6dopzsdcO\nj16U0YgRIzR9+nSNGjVKXl5emjNnjho0aKCZM2fq5Zdf1tVXX63+/fvLx8dH48aN0+jRo2WM0WOP\nPaaAgICqLr/Mpk6dWuq2jRo1SlOnTtWoUaPk5+env//971VdfpnMmjVLzz//vPz8/NS4cWM9//zz\nCg4OrvFtffPNN5WWlqbXX39dr7/+uiRpxowZeuGFF2rdebVq67Rp0zRnzpxad14rW9++fbVx40aN\nHDlSxhjNmTNHK1asUFZWlqKjozVt2jRNnDhRxhgNHz5cTZs2rTF1Nm3aVFu3btWIESNkjNEzzzxT\noc+tXkiNf/rTn/TUU09p9OjRys3N1WOPPaagoKAKq7E0dZZ2nepWo9U48fbbbyswMLDa1FgVLqTO\nPn36VKtrx8rFXjtexhhTXg0AAAAAagsevQAAAAAsEJQBAAAACwRlAAAAwAJBGcD/b7cOBAAAAAAE\n+V87wncAAAAfSURBVFsvMEJRBAAMUQYAgCHKAAAwRBkAAIYoAwDACE6ReK9Lu4sJAAAAAElFTkSu\nQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2cfed3a6c18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "f,(ax1, ax2) = plt.subplots(1, 2, sharey=True,figsize=(12,6))\n",
    "ax1.scatter(df['mean area'],df['Cancer'])\n",
    "ax1.set_title(\"Cancer cases as a function of mean area\", fontsize=15)\n",
    "ax2.scatter(df['mean smoothness'],df['Cancer'])\n",
    "ax2.set_title(\"Cancer cases as a function of mean smoothness\", fontsize=15)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Training and prediction"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Train Test Split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mean radius</th>\n",
       "      <th>mean texture</th>\n",
       "      <th>mean perimeter</th>\n",
       "      <th>mean area</th>\n",
       "      <th>mean smoothness</th>\n",
       "      <th>mean compactness</th>\n",
       "      <th>mean concavity</th>\n",
       "      <th>mean concave points</th>\n",
       "      <th>mean symmetry</th>\n",
       "      <th>mean fractal dimension</th>\n",
       "      <th>...</th>\n",
       "      <th>worst radius</th>\n",
       "      <th>worst texture</th>\n",
       "      <th>worst perimeter</th>\n",
       "      <th>worst area</th>\n",
       "      <th>worst smoothness</th>\n",
       "      <th>worst compactness</th>\n",
       "      <th>worst concavity</th>\n",
       "      <th>worst concave points</th>\n",
       "      <th>worst symmetry</th>\n",
       "      <th>worst fractal dimension</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>17.99</td>\n",
       "      <td>10.38</td>\n",
       "      <td>122.80</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>0.11840</td>\n",
       "      <td>0.27760</td>\n",
       "      <td>0.3001</td>\n",
       "      <td>0.14710</td>\n",
       "      <td>0.2419</td>\n",
       "      <td>0.07871</td>\n",
       "      <td>...</td>\n",
       "      <td>25.38</td>\n",
       "      <td>17.33</td>\n",
       "      <td>184.60</td>\n",
       "      <td>2019.0</td>\n",
       "      <td>0.1622</td>\n",
       "      <td>0.6656</td>\n",
       "      <td>0.7119</td>\n",
       "      <td>0.2654</td>\n",
       "      <td>0.4601</td>\n",
       "      <td>0.11890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>20.57</td>\n",
       "      <td>17.77</td>\n",
       "      <td>132.90</td>\n",
       "      <td>1326.0</td>\n",
       "      <td>0.08474</td>\n",
       "      <td>0.07864</td>\n",
       "      <td>0.0869</td>\n",
       "      <td>0.07017</td>\n",
       "      <td>0.1812</td>\n",
       "      <td>0.05667</td>\n",
       "      <td>...</td>\n",
       "      <td>24.99</td>\n",
       "      <td>23.41</td>\n",
       "      <td>158.80</td>\n",
       "      <td>1956.0</td>\n",
       "      <td>0.1238</td>\n",
       "      <td>0.1866</td>\n",
       "      <td>0.2416</td>\n",
       "      <td>0.1860</td>\n",
       "      <td>0.2750</td>\n",
       "      <td>0.08902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>19.69</td>\n",
       "      <td>21.25</td>\n",
       "      <td>130.00</td>\n",
       "      <td>1203.0</td>\n",
       "      <td>0.10960</td>\n",
       "      <td>0.15990</td>\n",
       "      <td>0.1974</td>\n",
       "      <td>0.12790</td>\n",
       "      <td>0.2069</td>\n",
       "      <td>0.05999</td>\n",
       "      <td>...</td>\n",
       "      <td>23.57</td>\n",
       "      <td>25.53</td>\n",
       "      <td>152.50</td>\n",
       "      <td>1709.0</td>\n",
       "      <td>0.1444</td>\n",
       "      <td>0.4245</td>\n",
       "      <td>0.4504</td>\n",
       "      <td>0.2430</td>\n",
       "      <td>0.3613</td>\n",
       "      <td>0.08758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>11.42</td>\n",
       "      <td>20.38</td>\n",
       "      <td>77.58</td>\n",
       "      <td>386.1</td>\n",
       "      <td>0.14250</td>\n",
       "      <td>0.28390</td>\n",
       "      <td>0.2414</td>\n",
       "      <td>0.10520</td>\n",
       "      <td>0.2597</td>\n",
       "      <td>0.09744</td>\n",
       "      <td>...</td>\n",
       "      <td>14.91</td>\n",
       "      <td>26.50</td>\n",
       "      <td>98.87</td>\n",
       "      <td>567.7</td>\n",
       "      <td>0.2098</td>\n",
       "      <td>0.8663</td>\n",
       "      <td>0.6869</td>\n",
       "      <td>0.2575</td>\n",
       "      <td>0.6638</td>\n",
       "      <td>0.17300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>20.29</td>\n",
       "      <td>14.34</td>\n",
       "      <td>135.10</td>\n",
       "      <td>1297.0</td>\n",
       "      <td>0.10030</td>\n",
       "      <td>0.13280</td>\n",
       "      <td>0.1980</td>\n",
       "      <td>0.10430</td>\n",
       "      <td>0.1809</td>\n",
       "      <td>0.05883</td>\n",
       "      <td>...</td>\n",
       "      <td>22.54</td>\n",
       "      <td>16.67</td>\n",
       "      <td>152.20</td>\n",
       "      <td>1575.0</td>\n",
       "      <td>0.1374</td>\n",
       "      <td>0.2050</td>\n",
       "      <td>0.4000</td>\n",
       "      <td>0.1625</td>\n",
       "      <td>0.2364</td>\n",
       "      <td>0.07678</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 30 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   mean radius  mean texture  mean perimeter  mean area  mean smoothness  \\\n",
       "0        17.99         10.38          122.80     1001.0          0.11840   \n",
       "1        20.57         17.77          132.90     1326.0          0.08474   \n",
       "2        19.69         21.25          130.00     1203.0          0.10960   \n",
       "3        11.42         20.38           77.58      386.1          0.14250   \n",
       "4        20.29         14.34          135.10     1297.0          0.10030   \n",
       "\n",
       "   mean compactness  mean concavity  mean concave points  mean symmetry  \\\n",
       "0           0.27760          0.3001              0.14710         0.2419   \n",
       "1           0.07864          0.0869              0.07017         0.1812   \n",
       "2           0.15990          0.1974              0.12790         0.2069   \n",
       "3           0.28390          0.2414              0.10520         0.2597   \n",
       "4           0.13280          0.1980              0.10430         0.1809   \n",
       "\n",
       "   mean fractal dimension           ...             worst radius  \\\n",
       "0                 0.07871           ...                    25.38   \n",
       "1                 0.05667           ...                    24.99   \n",
       "2                 0.05999           ...                    23.57   \n",
       "3                 0.09744           ...                    14.91   \n",
       "4                 0.05883           ...                    22.54   \n",
       "\n",
       "   worst texture  worst perimeter  worst area  worst smoothness  \\\n",
       "0          17.33           184.60      2019.0            0.1622   \n",
       "1          23.41           158.80      1956.0            0.1238   \n",
       "2          25.53           152.50      1709.0            0.1444   \n",
       "3          26.50            98.87       567.7            0.2098   \n",
       "4          16.67           152.20      1575.0            0.1374   \n",
       "\n",
       "   worst compactness  worst concavity  worst concave points  worst symmetry  \\\n",
       "0             0.6656           0.7119                0.2654          0.4601   \n",
       "1             0.1866           0.2416                0.1860          0.2750   \n",
       "2             0.4245           0.4504                0.2430          0.3613   \n",
       "3             0.8663           0.6869                0.2575          0.6638   \n",
       "4             0.2050           0.4000                0.1625          0.2364   \n",
       "\n",
       "   worst fractal dimension  \n",
       "0                  0.11890  \n",
       "1                  0.08902  \n",
       "2                  0.08758  \n",
       "3                  0.17300  \n",
       "4                  0.07678  \n",
       "\n",
       "[5 rows x 30 columns]"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_feat = df.drop('Cancer',axis=1) # Define a dataframe with only features\n",
    "df_feat.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0\n",
       "1    0\n",
       "2    0\n",
       "3    0\n",
       "4    0\n",
       "Name: Cancer, dtype: int32"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_target = df['Cancer'] # Define a dataframe with only target results i.e. cancer detections\n",
    "df_target.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(df_feat, df_target, test_size=0.30, random_state=101)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "178    1\n",
       "421    1\n",
       "57     0\n",
       "514    0\n",
       "548    1\n",
       "Name: Cancer, dtype: int32"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Train the Support Vector Classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model = SVC()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,\n",
       "  decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',\n",
       "  max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
       "  tol=0.001, verbose=False)"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Predictions and Evaluations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "predictions = model.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.metrics import classification_report,confusion_matrix"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Notice that we are classifying everything into a single class! This means our model needs to have it parameters adjusted (it may also help to normalize the data)**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[  0  66]\n",
      " [  0 105]]\n"
     ]
    }
   ],
   "source": [
    "print(confusion_matrix(y_test,predictions))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**As expected, the classification report card is bad**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.00      0.00      0.00        66\n",
      "          1       0.61      1.00      0.76       105\n",
      "\n",
      "avg / total       0.38      0.61      0.47       171\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Tirtha\\Python\\Anaconda3\\lib\\site-packages\\sklearn\\metrics\\classification.py:1113: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.\n",
      "  'precision', 'predicted', average, warn_for)\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(y_test,predictions))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Gridsearch\n",
    "\n",
    "Finding the right parameters (like what C or gamma values to use) is a tricky task! But luckily, Scikit-learn has the functionality of trying a bunch of combinations and see what works best, built in with GridSearchCV! The CV stands for cross-validation.\n",
    "\n",
    "**GridSearchCV takes a dictionary that describes the parameters that should be tried and a model to train. The grid of parameters is defined as a dictionary, where the keys are the parameters and the values are the settings to be tested.** "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "param_grid = {'C': [0.1,1, 10, 100, 1000], 'gamma': [1,0.1,0.01,0.001,0.0001], 'kernel': ['rbf']} "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One of the great things about GridSearchCV is that it is a meta-estimator. It takes an estimator like SVC, and creates a new estimator, that behaves exactly the same - in this case, like a classifier. You should add refit=True and choose verbose to whatever number you want, higher the number, the more verbose (verbose just means the text output describing the process)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "grid = GridSearchCV(SVC(),param_grid,refit=True,verbose=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, it runs the same loop with cross-validation, to find the best parameter combination. Once it has the best combination, it runs fit again on all data passed to fit (without cross-validation), to built a single new model using the best parameter setting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 3 folds for each of 25 candidates, totalling 75 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=1)]: Done  75 out of  75 | elapsed:    1.5s finished\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=None, error_score='raise',\n",
       "       estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,\n",
       "  decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',\n",
       "  max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
       "  tol=0.001, verbose=False),\n",
       "       fit_params={}, iid=True, n_jobs=1,\n",
       "       param_grid={'C': [0.1, 1, 10, 100, 1000], 'gamma': [1, 0.1, 0.01, 0.001, 0.0001], 'kernel': ['rbf']},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n",
       "       scoring=None, verbose=1)"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# May take awhile!\n",
    "grid.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**You can inspect the best parameters found by GridSearchCV in the best\\_params\\_ attribute, and the best estimator in the best\\_estimator\\_ attribute**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'C': 10, 'gamma': 0.0001, 'kernel': 'rbf'}"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=10, cache_size=200, class_weight=None, coef0=0.0,\n",
       "  decision_function_shape=None, degree=3, gamma=0.0001, kernel='rbf',\n",
       "  max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
       "  tol=0.001, verbose=False)"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid.best_estimator_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Then you can re-run predictions on this grid object just like you would with a normal model**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "grid_predictions = grid.predict(X_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Now print the confusion matrix to see improved predictions**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 60   6]\n",
      " [  3 102]]\n"
     ]
    }
   ],
   "source": [
    "print(confusion_matrix(y_test,grid_predictions))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Classification report shows improved F1-score**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.95      0.91      0.93        66\n",
      "          1       0.94      0.97      0.96       105\n",
      "\n",
      "avg / total       0.95      0.95      0.95       171\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(y_test,grid_predictions))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Another set of parameters for GridSearch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 3 folds for each of 25 candidates, totalling 75 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=1)]: Done  75 out of  75 | elapsed:    0.7s finished\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=None, error_score='raise',\n",
       "       estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,\n",
       "  decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',\n",
       "  max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
       "  tol=1e-05, verbose=False),\n",
       "       fit_params={}, iid=True, n_jobs=1,\n",
       "       param_grid={'C': [50, 75, 100, 125, 150], 'gamma': [0.01, 0.001, 0.0001, 1e-05, 1e-06], 'kernel': ['rbf']},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n",
       "       scoring=None, verbose=1)"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "param_grid = {'C': [50,75,100,125,150], 'gamma': [1e-2,1e-3,1e-4,1e-5,1e-6], 'kernel': ['rbf']} \n",
    "grid = GridSearchCV(SVC(tol=1e-5),param_grid,refit=True,verbose=1)\n",
    "grid.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=125, cache_size=200, class_weight=None, coef0=0.0,\n",
       "  decision_function_shape=None, degree=3, gamma=1e-05, kernel='rbf',\n",
       "  max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
       "  tol=1e-05, verbose=False)"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid.best_estimator_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 60   6]\n",
      " [  3 102]]\n"
     ]
    }
   ],
   "source": [
    "grid_predictions = grid.predict(X_test)\n",
    "print(confusion_matrix(y_test,grid_predictions))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
